"""
CPM Repositories Tool
Вспомогательная утилита для управления репозиториями cpm 1.6
"""

from cpm import Console, Router, Package, load_config, log, save_config
import sys
import requests


class CpmRouterTool(Console):
    '''Вспомогательный класс для управления списом репозиториев.'''

    def __init__(self):
        super(CpmRouterTool, self).__init__()

        self.command(self.info, ["info", "i"],
                     "информация о настройках и источниках")
        self.command(self.remove, ["remove", "rm", "r"],
                     "[targets] удалить источники из списка")
        self.command(self.add, ["add", "a"],
                     "[name url] добавить источник в список")

    def info(self, ctx):
        '''выводит информацию о настройках и источниках.'''
        config = load_config()

        Package('example', config["params"]).print_params()

        print(f'\nrepositores ({len(config["repositories"])}):')
        for k, v in config['repositories'].items():
            print()
            Router(f"cpm/{k}.toml").info()

    def remove(self, ctx):
        '''Удаляет источники из списка'''
        config = load_config()

        for x in ctx:
            if x not in config["repositories"]:
                log(f"{x} нет в списке источников", 'e')
                continue

            del config["repositories"][x]
            log(f"{x} удалёно из списка источников")

        save_config(config)

    def add(self, ctx):
        '''Добавляет источник в список'''
        config = load_config()

        if len(ctx.args) < 2:
            log(f"*.py add [NAME] [URL]")
            return False

        try:
            r = requests.get(ctx.args[1]+"/router.toml")
        except Exception as e:
            log(e, 'e')
        else:
            if r.status_code != 200:
                log(f"{r.status_code}: {ctx.args[1]}")
                return False

        config["repositories"][ctx.args[0]] = {
            "url": ctx.args[1], "last_update": 0}
        save_config(config)


if __name__ == '__main__':
    CpmRouterTool().process(sys.argv[1:])
